home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gigarom 4
/
Mac Giga-ROM 4.0 - 1993.toast
/
FILES
/
DEV
/
A-B
/
Acius09:92.cpt
/
Acius09_92
/
TN 30ƒ
/
Ext4D_DevTools_Dlg.p
next >
Wrap
Text File
|
1992-03-15
|
3KB
|
145 lines
PROCEDURE Redraw4DWindows;
CONST EX_REDRAW = 46;
VAR Blk4D:ParmBlock;
BEGIN
Call4D(EX_REDRAW,Blk4D);
END; { Redraw4DWindows }
FUNCTION NumToolBoxTraps:INTEGER;
BEGIN
IF NGetTrapAddress(_InitGraf,ToolTrap)=NGetTrapAddress($AA6E,ToolTrap) THEN NumToolBoxTraps:=$200
ELSE NumToolBoxTraps:=$400;
END; { NumToolBoxTraps }
FUNCTION GetTrapType(TheTrap:INTEGER):TrapType;
CONST TrapMask = $0800;
BEGIN
IF BAnd(TheTrap,TrapMask)>0 THEN GetTrapType:=ToolTrap ELSE GetTrapType:=OSTrap;
END; { GetTrapType }
FUNCTION TrapAvailable(TheTrap:INTEGER):BOOLEAN;
VAR TheType:TrapType;
BEGIN
TheType:=GetTrapType(TheTrap);
IF TheType=ToolTrap THEN
BEGIN
TheTrap:=BAnd(TheTrap,$07FF);
IF TheTrap>=NumToolBoxTraps THEN TheTrap:=_Unimplemented;
END;
TrapAvailable:=NGetTrapAddress(TheTrap,TheType)<>NGetTrapAddress(_Unimplemented,ToolTrap);
END;
FUNCTION GetScreenRect(AtLocation:Point):Rect;
VAR DeskPort:GrafPtr;
MyGD,CurGD:GDHandle;
Screen:Rect;
BEGIN
MyGD:=NIL;
IF TrapAvailable(_GetGDevice) THEN
BEGIN
IF LongInt(AtLocation)<>$80008000 THEN
BEGIN
CurGD:=GetDeviceList;
WHILE (CurGD<>NIL) DO
BEGIN
IF PtInRect(AtLocation,CurGD^^.GDRect) THEN
BEGIN
MyGD:=CurGD;
CurGD:=NIL;
END
ELSE CurGD:=GetNextDevice(CurGD);
END;
IF MyGD=NIL THEN MyGD:=GetGDevice;
END
ELSE MyGD:=GetGDevice;
END;
IF MyGD<>NIL THEN
BEGIN
Screen:=MyGD^^.GDRect;
IF MyGD=GetMainDevice THEN WITH Screen DO Top:=Top+IntegerPtr(MBarHeight)^;
END
ELSE
BEGIN
GetWMgrPort(DeskPort);
Screen:=DeskPort^.PortRect;
Screen.Top:=IntegerPtr(MBarHeight)^;
END;
GetScreenRect:=Screen;
END; { GetScreenRect }
PROCEDURE GetItemRect(MyDlg:DialogPtr;MyItem:INTEGER;Var ItemRect:Rect);
VAR Kind:INTEGER;
Content:Handle;
BEGIN
GetDItem(MyDlg,MyItem,Kind,Content,ItemRect);
END; { GetItemRect }
PROCEDURE DrawOKButton(MyDlg:DialogPtr);
VAR CurPort:GrafPtr;
ItemRect:Rect;
BEGIN
GetPort(CurPort);
SetPort(MyDlg);
ClipRect(MyDlg^.PortRect);
GetItemRect(MyDlg,OKButton,ItemRect);
PenNormal;
PenSize(3,3);
InsetRect(ItemRect,-4,-4);
FrameRoundRect(ItemRect,16,16);
PenNormal;
SetPort(CurPort);
END; { DrawOKButton }
PROCEDURE GetDlgLocation(DlgID:INTEGER;VAR H,V:INTEGER;VAR DlgFrame:Rect;MoveH,MoveV:BOOLEAN);
VAR DlgTemplate:DialogTHndl;
BEGIN
WITH GetScreenRect(Point($80008000)) DO
BEGIN
IF MoveH THEN H:=LoWrd(BSR(Right-Left,1)) ELSE H:=0;
IF MoveV THEN V:=LoWrd(BSR(Bottom-Top,1)) ELSE V:=0;
END;
DlgTemplate:=DialogTHndl(GetResource('DLOG',DlgID));
DlgFrame:=DlgTemplate^^.BoundsRect;
WITH DlgFrame DO
BEGIN
IF MoveH THEN
BEGIN
H:=H-LoWrd(BSR(Right-Left,1));
OffSetRect(DlgFrame,-Left+H,0);
END
ELSE H:=Left;
IF MoveV THEN
BEGIN
V:=V-LoWrd(BSR(Bottom-Top,1));
OffSetRect(DlgFrame,0,-Top+V);
END
ELSE V:=Top;
END;
InsetRect(DlgFrame,-8,-8);
END; { GetDlgLocation }
PROCEDURE ShowDevToolDlg;
VAR Click,DH,DV,DlgID:INTEGER;
MyDlg:DialogPtr;
CurPort:GrafPtr;
DlgRect:Rect;
BEGIN
GetPort(CurPort);
DlgID:=GetResNum('4BNX','DLOG',DevToolDlgID);
MyDlg:=GetNewDialog(DlgID,Nil,Pointer(-1));
IF MyDlg<>NIL THEN
BEGIN
MySetCursor(0);
GetDlgLocation(DlgID,DH,DV,DlgRect,TRUE,FALSE);
DV:=38;
MoveWindow(MyDlg,DH,DV,FALSE);
ShowWindow(MyDlg);
SetPort(MyDlg);
DrawOKButton(MyDlg);
REPEAT ModalDialog(Nil,Click) UNTIL (Click=OKButton);
DisposDialog(MyDlg);
SetPort(CurPort);
Redraw4DWindows;
END;
END; { ShowDevToolDlg }